package com.newcoin.xgb.service;

import com.newcoin.xgb.dto.*;
import com.newcoin.xgb.entity.*;

import com.newcoin.xgb.po.ShipAddressPo;
import com.newcoin.xgb.po.TeamMemberPo;
import com.newcoin.xgb.po.TeamReportPo;

import java.util.List;

public interface XgbUserService {

    Result registered(RegisteredDto registeredDto) throws Exception;

    Result<XgbUsers> login(LoginDto loginDto) throws Exception;

    Result outLogin(Long userId) throws Exception;

    Result changeHead(String path, Long userId) throws Exception;

    Result changeNickName(ChangeNicknameDto changeNicknameDto) throws Exception;

    Result changePassword(ChangePasswordDto changePasswordDto) throws Exception;

    Result forgetPassword(ForgetPasswordDto forgetPasswordDto) throws Exception;

    Result addShipAddress(AddShipAddressDto addShipAddressDto) throws Exception;

    Result<ShipAddressPo> getShipAddress(QueryParameterDto queryParameterDto) throws Exception;

    Result<XgbShipAddress> getShipAddressById(QueryShipAddressById queryShipAddressById) throws Exception;

    Result changeShipAddress(ChangeShipAddressDto changeShipAddressDto) throws Exception;

    Result deleteShipAddress(QueryParameterDto queryParameterDto) throws Exception;

    Result<TeamReportPo> getTeamReport(QueryParameterDto queryParameterDto) throws Exception;

    Result<TeamMemberPo> getTeamMember(QueryParameterDto queryParameterDto) throws Exception;

    Result<Boolean> isSettingPayPwd(QueryParameterDto queryParameterDto) throws Exception;

    Result<String> getInvCodePath(QueryParameterDto queryParameterDto) throws Exception;


    Result<Boolean> isBindReceiptAddress(QueryParameterDto queryParameterDto) throws Exception;

    Result verified(VerifiedDto verifiedDto) throws Exception;


    Result<List<String>> getBankList() throws Exception;

    Result<List<XgbUserBank>> getUserBank(Long userId, String token) throws Exception;

    Result UnBundlingBank(Long userId, String token, String id) throws Exception;


    Result bundlingBank(Long userId, String token, String openBank, String cardholder, String cardNumber, String openBranchBank, String mobile);


}
